#ifndef _FPGA_REG_DEFS_H_
#define _FPGA_REG_DEFS_H_

/** Define Registers */
/* Global Registers */
#define	RGDE_REG_GLOBAL_BASE         	0x00000000
#define	RGDE_REG_VERSION             	(RGDE_REG_GLOBAL_BASE + 0x00)
#define	RGDE_REG_DATE               	(RGDE_REG_GLOBAL_BASE + 0x04)
#define	RGDE_REG_TEST             		(RGDE_REG_GLOBAL_BASE + 0x08)
#define	RGDE_REG_INT_ENABLE         	(RGDE_REG_GLOBAL_BASE + 0x10)
#define	RGDE_REG_INT_STATUS         	(RGDE_REG_GLOBAL_BASE + 0x14)

/*  MDIO Registers */
#define	RGDE_REG_MDIO_BASE         		0x00000100
#define	RGDE_REG_MDIO_CFG_DT            (RGDE_REG_MDIO_BASE + 0x00)
#define	RGDE_REG_MDIO_CFG_SPEED        	(RGDE_REG_MDIO_BASE + 0x04)
#define	RGDE_REG_MDIO_CFG_START        	(RGDE_REG_MDIO_BASE + 0x08)
#define	RGDE_REG_MDIO_RDAT         		(RGDE_REG_MDIO_BASE + 0x10)
#define	RGDE_REG_MDIO_STATUS         	(RGDE_REG_MDIO_BASE + 0x14)

/* GE0 PORT Registers */
#define RGDE_REG_GE0_PORT_BASE         	0x00001000
#define RGDE_REG_GE0_PORT_CTL         	(RGDE_REG_GE0_PORT_BASE + 0x00)
#define RGDE_REG_GE0_PORT_STA     		(RGDE_REG_GE0_PORT_BASE + 0x04)
#define RGDE_REG_GE0_PORT_MTU     		(RGDE_REG_GE0_PORT_BASE + 0x08)
#define RGDE_REG_GE0_PORT_RXPKTS       	(RGDE_REG_GE0_PORT_BASE + 0x10)
#define RGDE_REG_GE0_PORT_RXBYTE       	(RGDE_REG_GE0_PORT_BASE + 0x18)
#define RGDE_REG_GE0_PORT_RXERR     	(RGDE_REG_GE0_PORT_BASE + 0x20)
#define RGDE_REG_GE0_PORT_RXDROP     	(RGDE_REG_GE0_PORT_BASE + 0x28)
#define RGDE_REG_GE0_PORT_RXMULTI       (RGDE_REG_GE0_PORT_BASE + 0x30)
#define RGDE_REG_GE0_PORT_RXBRO    		(RGDE_REG_GE0_PORT_BASE + 0x38)
#define RGDE_REG_GE0_PORT_TXPKTS     	(RGDE_REG_GE0_PORT_BASE + 0x40)
#define RGDE_REG_GE0_PORT_TXBYTE       	(RGDE_REG_GE0_PORT_BASE + 0x48)
#define RGDE_REG_GE0_PORT_TXERR       	(RGDE_REG_GE0_PORT_BASE + 0x50)
#define RGDE_REG_GE0_PORT_TXDROP     	(RGDE_REG_GE0_PORT_BASE + 0x58)
#define RGDE_REG_GE0_PORT_TXMULT     	(RGDE_REG_GE0_PORT_BASE + 0x60)
#define RGDE_REG_GE0_PORT_TXBRO       	(RGDE_REG_GE0_PORT_BASE + 0x68)

/* GE1 PORT Registers */
#define RGDE_REG_GE1_PORT_BASE         	0x00001100
#define RGDE_REG_GE1_PORT_CTL         	(RGDE_REG_GE1_PORT_BASE + 0x00)
#define RGDE_REG_GE1_PORT_STA     		(RGDE_REG_GE1_PORT_BASE + 0x04)
#define RGDE_REG_GE1_PORT_MTU     		(RGDE_REG_GE1_PORT_BASE + 0x08)
#define RGDE_REG_GE1_PORT_RXPKTS       	(RGDE_REG_GE1_PORT_BASE + 0x10)
#define RGDE_REG_GE1_PORT_RXBYTE       	(RGDE_REG_GE1_PORT_BASE + 0x18)
#define RGDE_REG_GE1_PORT_RXERR     	(RGDE_REG_GE1_PORT_BASE + 0x20)
#define RGDE_REG_GE1_PORT_RXDROP     	(RGDE_REG_GE1_PORT_BASE + 0x28)
#define RGDE_REG_GE1_PORT_RXMULTI       (RGDE_REG_GE1_PORT_BASE + 0x30)
#define RGDE_REG_GE1_PORT_RXBRO    		(RGDE_REG_GE1_PORT_BASE + 0x38)
#define RGDE_REG_GE1_PORT_TXPKTS     	(RGDE_REG_GE1_PORT_BASE + 0x40)
#define RGDE_REG_GE1_PORT_TXBYTE       	(RGDE_REG_GE1_PORT_BASE + 0x48)
#define RGDE_REG_GE1_PORT_TXERR       	(RGDE_REG_GE1_PORT_BASE + 0x50)
#define RGDE_REG_GE1_PORT_TXDROP     	(RGDE_REG_GE1_PORT_BASE + 0x58)
#define RGDE_REG_GE1_PORT_TXMULT     	(RGDE_REG_GE1_PORT_BASE + 0x60)
#define RGDE_REG_GE1_PORT_TXBRO       	(RGDE_REG_GE1_PORT_BASE + 0x68)

/* GE2 PORT Registers */
#define RGDE_REG_GE2_PORT_BASE         	0x00001200
#define RGDE_REG_GE2_PORT_CTL         	(RGDE_REG_GE2_PORT_BASE + 0x00)
#define RGDE_REG_GE2_PORT_STA     		(RGDE_REG_GE2_PORT_BASE + 0x04)
#define RGDE_REG_GE2_PORT_MTU     		(RGDE_REG_GE2_PORT_BASE + 0x08)
#define RGDE_REG_GE2_PORT_RXPKTS       	(RGDE_REG_GE2_PORT_BASE + 0x10)
#define RGDE_REG_GE2_PORT_RXBYTE       	(RGDE_REG_GE2_PORT_BASE + 0x18)
#define RGDE_REG_GE2_PORT_RXERR     	(RGDE_REG_GE2_PORT_BASE + 0x20)
#define RGDE_REG_GE2_PORT_RXDROP     	(RGDE_REG_GE2_PORT_BASE + 0x28)
#define RGDE_REG_GE2_PORT_RXMULTI       (RGDE_REG_GE2_PORT_BASE + 0x30)
#define RGDE_REG_GE2_PORT_RXBRO    		(RGDE_REG_GE2_PORT_BASE + 0x38)
#define RGDE_REG_GE2_PORT_TXPKTS     	(RGDE_REG_GE2_PORT_BASE + 0x40)
#define RGDE_REG_GE2_PORT_TXBYTE       	(RGDE_REG_GE2_PORT_BASE + 0x48)
#define RGDE_REG_GE2_PORT_TXERR       	(RGDE_REG_GE2_PORT_BASE + 0x50)
#define RGDE_REG_GE2_PORT_TXDROP     	(RGDE_REG_GE2_PORT_BASE + 0x58)
#define RGDE_REG_GE2_PORT_TXMULT     	(RGDE_REG_GE2_PORT_BASE + 0x60)
#define RGDE_REG_GE2_PORT_TXBRO       	(RGDE_REG_GE2_PORT_BASE + 0x68)

/* GE3 PORT Registers */
#define RGDE_REG_GE3_PORT_BASE         	0x00001300
#define RGDE_REG_GE3_PORT_CTL         	(RGDE_REG_GE3_PORT_BASE + 0x00)
#define RGDE_REG_GE3_PORT_STA     		(RGDE_REG_GE3_PORT_BASE + 0x04)
#define RGDE_REG_GE3_PORT_MTU     		(RGDE_REG_GE3_PORT_BASE + 0x08)
#define RGDE_REG_GE3_PORT_RXPKTS       	(RGDE_REG_GE3_PORT_BASE + 0x10)
#define RGDE_REG_GE3_PORT_RXBYTE       	(RGDE_REG_GE3_PORT_BASE + 0x18)
#define RGDE_REG_GE3_PORT_RXERR     	(RGDE_REG_GE3_PORT_BASE + 0x20)
#define RGDE_REG_GE3_PORT_RXDROP     	(RGDE_REG_GE3_PORT_BASE + 0x28)
#define RGDE_REG_GE3_PORT_RXMULTI       (RGDE_REG_GE3_PORT_BASE + 0x30)
#define RGDE_REG_GE3_PORT_RXBRO    		(RGDE_REG_GE3_PORT_BASE + 0x38)
#define RGDE_REG_GE3_PORT_TXPKTS     	(RGDE_REG_GE3_PORT_BASE + 0x40)
#define RGDE_REG_GE3_PORT_TXBYTE       	(RGDE_REG_GE3_PORT_BASE + 0x48)
#define RGDE_REG_GE3_PORT_TXERR       	(RGDE_REG_GE3_PORT_BASE + 0x50)
#define RGDE_REG_GE3_PORT_TXDROP     	(RGDE_REG_GE3_PORT_BASE + 0x58)
#define RGDE_REG_GE3_PORT_TXMULT     	(RGDE_REG_GE3_PORT_BASE + 0x60)
#define RGDE_REG_GE3_PORT_TXBRO       	(RGDE_REG_GE3_PORT_BASE + 0x68)

/* GE4 PORT Registers */
#define RGDE_REG_XGE0_PORT_BASE         0x00001400
#define RGDE_REG_XGE0_PORT_CTL         	(RGDE_REG_XGE0_PORT_BASE + 0x00)
#define RGDE_REG_XGE0_PORT_STA     		(RGDE_REG_XGE0_PORT_BASE + 0x04)
#define RGDE_REG_XGE0_PORT_MTU     		(RGDE_REG_XGE0_PORT_BASE + 0x08)
#define RGDE_REG_XGE0_PORT_RXPKTS       (RGDE_REG_XGE0_PORT_BASE + 0x10)
#define RGDE_REG_XGE0_PORT_RXBYTE       (RGDE_REG_XGE0_PORT_BASE + 0x18)
#define RGDE_REG_XGE0_PORT_RXERR     	(RGDE_REG_XGE0_PORT_BASE + 0x20)
#define RGDE_REG_XGE0_PORT_RXDROP     	(RGDE_REG_XGE0_PORT_BASE + 0x28)
#define RGDE_REG_XGE0_PORT_RXMULTI     	(RGDE_REG_XGE0_PORT_BASE + 0x30)
#define RGDE_REG_XGE0_PORT_RXBRO    	(RGDE_REG_XGE0_PORT_BASE + 0x38)
#define RGDE_REG_XGE0_PORT_TXPKTS     	(RGDE_REG_XGE0_PORT_BASE + 0x40)
#define RGDE_REG_XGE0_PORT_TXBYTE       (RGDE_REG_XGE0_PORT_BASE + 0x48)
#define RGDE_REG_XGE0_PORT_TXERR       	(RGDE_REG_XGE0_PORT_BASE + 0x50)
#define RGDE_REG_XGE0_PORT_TXDROP     	(RGDE_REG_XGE0_PORT_BASE + 0x58)
#define RGDE_REG_XGE0_PORT_TXMULT     	(RGDE_REG_XGE0_PORT_BASE + 0x60)
#define RGDE_REG_XGE0_PORT_TXBRO       	(RGDE_REG_XGE0_PORT_BASE + 0x68)

/* GE5 PORT Registers */
#define RGDE_REG_XGE1_PORT_BASE         0x00001500
#define RGDE_REG_XGE1_PORT_CTL         	(RGDE_REG_XGE1_PORT_BASE + 0x00)
#define RGDE_REG_XGE1_PORT_STA     		(RGDE_REG_XGE1_PORT_BASE + 0x04)
#define RGDE_REG_XGE1_PORT_MTU     		(RGDE_REG_XGE1_PORT_BASE + 0x08)
#define RGDE_REG_XGE1_PORT_RXPKTS       (RGDE_REG_XGE1_PORT_BASE + 0x10)
#define RGDE_REG_XGE1_PORT_RXBYTE       (RGDE_REG_XGE1_PORT_BASE + 0x18)
#define RGDE_REG_XGE1_PORT_RXERR     	(RGDE_REG_XGE1_PORT_BASE + 0x20)
#define RGDE_REG_XGE1_PORT_RXDROP     	(RGDE_REG_XGE1_PORT_BASE + 0x28)
#define RGDE_REG_XGE1_PORT_RXMULTI     	(RGDE_REG_XGE1_PORT_BASE + 0x30)
#define RGDE_REG_XGE1_PORT_RXBRO    	(RGDE_REG_XGE1_PORT_BASE + 0x38)
#define RGDE_REG_XGE1_PORT_TXPKTS     	(RGDE_REG_XGE1_PORT_BASE + 0x40)
#define RGDE_REG_XGE1_PORT_TXBYTE       (RGDE_REG_XGE1_PORT_BASE + 0x48)
#define RGDE_REG_XGE1_PORT_TXERR       	(RGDE_REG_XGE1_PORT_BASE + 0x50)
#define RGDE_REG_XGE1_PORT_TXDROP     	(RGDE_REG_XGE1_PORT_BASE + 0x58)
#define RGDE_REG_XGE1_PORT_TXMULT     	(RGDE_REG_XGE1_PORT_BASE + 0x60)
#define RGDE_REG_XGE1_PORT_TXBRO       	(RGDE_REG_XGE1_PORT_BASE + 0x68)

#define RGDE_REG_CPU_BASE         		0x00002100
#define RGDE_REG_PCIE_ENDIAN_CNTR     	(RGDE_REG_CPU_BASE + 0x08)

/* DMA Registers */
#define RGDE_REG_DMA_BASE   	        0x00004000
#define RGDE_REG_BD_WR_OVERTIME   		(RGDE_REG_DMA_BASE + 0x00)
#define RGDE_REG_BD_DEEP   		        (RGDE_REG_DMA_BASE + 0x04)

/* TX0 Registers */
#define RGDE_REG_TX0_BASE         		0x00005000
#define RGDE_REG_TX0_CHN_EN         	(RGDE_REG_TX0_BASE + 0x00)
#define RGDE_REG_TX0_BD_BASE     		(RGDE_REG_TX0_BASE + 0x04)
#define RGDE_REG_TX0_BD_TAIL    		(RGDE_REG_TX0_BASE + 0x08)
#define RGDE_REG_TX0_BD_READY_NUM       (RGDE_REG_TX0_BASE + 0x0c)
#define RGDE_REG_TX0_CPU2FPGA_BD_NUM    (RGDE_REG_TX0_BASE + 0x30)
#define RGDE_REG_TX0_FPGA2CPU_BD_NUM    (RGDE_REG_TX0_BASE + 0x34)

/* TX1 Registers */
#define RGDE_REG_TX1_BASE         		0x00005100
#define RGDE_REG_TX1_CHN_EN         	(RGDE_REG_TX1_BASE + 0x00)
#define RGDE_REG_TX1_BD_BASE     		(RGDE_REG_TX1_BASE + 0x04)
#define RGDE_REG_TX1_BD_TAIL    		(RGDE_REG_TX1_BASE + 0x08)
#define RGDE_REG_TX1_BD_READY_NUM       (RGDE_REG_TX1_BASE + 0x0c)
#define RGDE_REG_TX1_CPU2FPGA_BD_NUM    (RGDE_REG_TX1_BASE + 0x30)
#define RGDE_REG_TX1_FPGA2CPU_BD_NUM    (RGDE_REG_TX1_BASE + 0x34)

/* RX0 Registers */
#define RGDE_REG_RX0_BASE         		0x00006400
#define RGDE_REG_RX0_CHN_EN         	(RGDE_REG_RX0_BASE + 0x00)
#define RGDE_REG_RX0_BD_BASE     		(RGDE_REG_RX0_BASE + 0x04)
#define RGDE_REG_RX0_BD_TAIL    		(RGDE_REG_RX0_BASE + 0x08)
#define RGDE_REG_RX0_BD_READY_NUM       (RGDE_REG_RX0_BASE + 0x0c)
#define RGDE_REG_RX0_CPU2FPGA_BD_NUM    (RGDE_REG_RX0_BASE + 0x30)
#define RGDE_REG_RX0_FPGA2CPU_BD_NUM    (RGDE_REG_RX0_BASE + 0x34)

/* RX1 Registers */
#define RGDE_REG_RX1_BASE         		0x00006500
#define RGDE_REG_RX1_CHN_EN         	(RGDE_REG_RX1_BASE + 0x00)
#define RGDE_REG_RX1_BD_BASE     		(RGDE_REG_RX1_BASE + 0x04)
#define RGDE_REG_RX1_BD_TAIL    		(RGDE_REG_RX1_BASE + 0x08)
#define RGDE_REG_RX1_BD_READY_NUM       (RGDE_REG_RX1_BASE + 0x0c)
#define RGDE_REG_RX1_CPU2FPGA_BD_NUM    (RGDE_REG_RX1_BASE + 0x30)
#define RGDE_REG_RX1_FPGA2CPU_BD_NUM    (RGDE_REG_RX1_BASE + 0x34)


#endif /* _FPGA_REG_DEFS_H_ */
